/*定义有名字的函数*/
eat();//显示声明函数可以先调用后定义,因为函数会先加载

function eat() {
    console.log("我吃了");
}

function getSum(a, b) {//js函数参数无需类型,也没有返回值类型
    return a + b;
}

let sum = getSum(10, 20);
console.log(sum);//30

//js参数定义的个数可以与函数调用时传递的参数个数不同！
let sum1 = getSum(10, 20, 30, 40, 50);//可多
console.log(sum1);//30

let sum2 = getSum(10);//可少
console.log(sum2);//NaN

let haha = function () {//定义了一个匿名函数,再赋值给一个变量
    console.log("哈哈，我这个函数没有名字");
}

haha();//匿名函数不可以在声明前先调用,因为本质是定义一个匿名函数然后赋值给一个变量,而变量必须先赋值后使用,以此种方式定义的匿名函数,在内存中与普通函数放在一起